﻿/* Autoduel Game
 * CS4911 Senior Design Project
 * Fall 2010 Semester
 * Ian Axelrod, Liz Ha, Andrew Muldowney, Edward Futch
 */

using System.Collections.Generic;

using AutoduelClient.GameClient.Locations;
using AutoduelClient.GameClient.Weapons;

using Microsoft.Xna.Framework;
using AutoduelClient.GameClient.Player;
namespace AutoduelClient.GameClient.Locations
{
    /// <summary>
    /// Represents a car in the autoduel world
    /// </summary>
    public class Car
    {
		#region Fields (16)
		// the powerplant for this car
        private PowerPlant powerPlant;

		// the chassis for this car
        private Chassis chassis;

		// the current location of this car
        private Location currentLocation;

		// who owns this car
        private Player.Player owner;

		// the active weapon for this car
        private Weapon activeWeapon;

		// the current coordinates of this car
        private Coordinate currentCoord;

		// a list of weapons for this car
        private List<Weapon> weaponArray;

		// the current speed of this car
        private double currentSpeed;

		// the armor of this car
        private int armor;
		// the cost of the car
        private int cost;
		// the handling class of this car
        // NOTE: probably needs an enum
        private int handlingClass;
		// the max accel for this car
        private int maxAccel;
		// the maximum amount of armor for this car
        private int maxArmor;
		// the max speed for this car
        private int maxSpeed;
		// the number of spaces this car has left
        private int spacesAvailable;

		// the name of the car
        private string name;
		#endregion

		#region Properties (16)
		/// <summary>
        /// Get/Set the active weapon for the car
        /// </summary>
        public Weapon ActiveWeapon
        {
            get { return activeWeapon; }
            set { activeWeapon = value; }
        }
		/// <summary>
        /// Get/Set the armor for this car
        /// </summary>
        public int Armor
        {
            get { return armor; }
            set { armor = value; }
        }
		/// <summary>
        /// Get/Set the chassis of the car
        /// </summary>
        public Chassis Chassis
        {
            get { return chassis; }
            set { chassis = value; }
        }
		/// <summary>
        /// Get/Set the cost of the car
        /// </summary>
        public int Cost
        {
            get { return cost; }
            set { cost = value; }
        }
		/// <summary>
        /// Get/Set the current coordinates of this car
        /// </summary>
        public Coordinate CurrentCoord
        {
            get { return currentCoord; }
            set { currentCoord = value; }
        }
		/// <summary>
        /// Get/Set the current location of this car
        /// </summary>
        public Location CurrentLocation
        {
            get { return currentLocation; }
            set { currentLocation = value; }
        }
		/// <summary>
        /// Get/Set the current speed of this car
        /// </summary>
        public double CurrentSpeed
        {
            get { return currentSpeed; }
            set { currentSpeed = value; }
        }
		/// <summary>
        /// Get/Set the handling class of this car
        /// </summary>
        public int HandlingClass
        {
            get { return handlingClass; }
            set { handlingClass = value; }
        }
		/// <summary>
        /// Get/Set the max accel of the car
        /// </summary>
        public int MaxAccel
        {
            get { return maxAccel; }
            set { maxAccel = value; }
        }
		/// <summary>
        /// Get/Set the maximum amount of armor for this car
        /// </summary>
        public int MaxArmor
        {
            get { return maxArmor; }
            set { maxArmor = value; }
        }
		/// <summary>
        /// Get/Set the max speed of the car
        /// </summary>
        public int MaxSpeed
        {
            get { return maxSpeed; }
            set { maxSpeed = value; }
        }
		/// <summary>
        /// Get/Set the name of the car
        /// </summary>
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
		/// <summary>
        /// Get/Set the owner of the car
        /// </summary>
        public Player.Player Owner
        {
            get { return owner; }
            set { owner = value; }
        }
		/// <summary>
        /// Get/Set the engine for this car
        /// </summary>
        public PowerPlant PowerPlant
        {
            get { return powerPlant; }
            set { powerPlant = value; }
        }
		/// <summary>
        /// Get/Set the number of spaces this car has left
        /// </summary>
        public int SpacesAvailable
        {
            get { return spacesAvailable; }
            set { spacesAvailable = value; }
        }
		/// <summary>
        /// Get/Set the weapons mounted on the car
        /// </summary>
        public List<Weapon> WeaponArray
        {
            get { return weaponArray; }
            set { weaponArray = value; }
        }
		#endregion
    }
}
